﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using InnvoiceActual.Logica.GestorDB;
using InnvoiceActual.Logica.GestorObject;
using InnvoiceActual.Ws.Facturas;

namespace InnvoiceActual.Ws.Clientes
{
    /// <summary>
    /// Lógica de interacción para DetalleClienteWS.xaml
    /// </summary>
    public partial class DetalleClienteWS : Window
    {
        ClienteCS devolverCliente = new ClienteCS();
        List<ClienteCS> listaDeClientes = new List<ClienteCS>();

        public delegate void EnviarCliente(ClienteCS sender);

        public EnviarCliente enviarCliente;


        public DetalleClienteWS()
        {
            InitializeComponent();
            setearDataGrid();            
        }



        private void btnRegresar_Click(object sender, RoutedEventArgs e)
        {
            if ((dgCliente.SelectedIndex >= 0) && (listaDeClientes.Count >= 0)) 
                enviarCliente(listaDeClientes[dgCliente.SelectedIndex]);           
            
            this.Close();            
        }

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {

        }

        #region auxiliar

        private void setearDataGrid()
        {
            listaDeClientes = (new ClienteDB()).FacturarCliente();
            dgCliente.ItemsSource = listaDeClientes;
        }

        private void AplicarEfecto(Window win)
        {
            var objBlur = new System.Windows.Media.Effects.BlurEffect();
            objBlur.Radius = 5;
            win.Effect = objBlur;
        }

        private void QuitarEfecto(Window win)
        {
            win.Effect = null;
        }


        private void ventana_cliente(ClienteCS auxCliente, byte auxOperacion)
        {
            ClienteWS miVentanaCliente = new ClienteWS(auxCliente, auxOperacion);
            miVentanaCliente.ShowInTaskbar = false;
            miVentanaCliente.Owner = this; AplicarEfecto(this);
            miVentanaCliente.ShowDialog();
            bool?
            resultado = miVentanaCliente.DialogResult;
            if (resultado != null)
            {
                if (resultado == false)
                {
                    QuitarEfecto(this);
                }
            }
        }

        #endregion auxiliar


        private void btnVerDatos_Click(object sender, RoutedEventArgs e)
        {
            ventana_VerDatos();
        }


        private void ventana_VerDatos() {
            if ((dgCliente.SelectedIndex >= 0) && (listaDeClientes.Count >= 0)) ventana_cliente(listaDeClientes[dgCliente.SelectedIndex], 1);
        }

        private void Window_Activated(object sender, EventArgs e)
        {
            setearDataGrid();
        }

        private void Window_KeyDown(object sender, KeyEventArgs e)
        {
            switch (e.Key.ToString().ToUpper())
            {
                case "F2":
                    ventana_cliente(new ClienteCS(), 0);
                    break;
                case "F3":
                    ventana_VerDatos();
                    break;
                case "F4":                    
                    break;
                case "ESCAPE":
                    this.Close();
                    break;
                default:
                    return;
            }
        }


        private void BuscarPorRazonSocial (){
            txtFiltro.Text = "%" + txtFiltro.Text + "%";
            listaDeClientes = (new ClienteDB()).filtrarClientesPorRS(txtFiltro.Text);
            dgCliente.ItemsSource = listaDeClientes;
        }

        private void BuscarPorContacto()
        {
            txtFiltro.Text = "%" + txtFiltro.Text + "%";
            listaDeClientes = (new ClienteDB()).filtrarClientesPorContacto(txtFiltro.Text);
            dgCliente.ItemsSource = listaDeClientes;
        }

        private void BuscarPorLocalidad()
        {
            txtFiltro.Text = "%" + txtFiltro.Text + "%";
            listaDeClientes = (new ClienteDB()).filtrarClientesPorLocalidad(txtFiltro.Text);
            dgCliente.ItemsSource = listaDeClientes;
        }

        private void BuscarPorProvincia()
        {
            txtFiltro.Text = "%" + txtFiltro.Text + "%";
            listaDeClientes = (new ClienteDB()).filtrarClientesPorProvincia(txtFiltro.Text);
            dgCliente.ItemsSource = listaDeClientes;
        }

        private void btnFiltrar_Click(object sender, RoutedEventArgs e)
        {
            switch (cbxCondicionFiltrado.SelectedIndex){
                case 0: //Razón Social
                    BuscarPorRazonSocial();
                    break;
                case 1: //Contacto  
                    BuscarPorContacto();
                    break;
                case 3: //Provincia
                    BuscarPorProvincia();
                    break;
                case 4: //Localidad
                    BuscarPorLocalidad();
                    break;
                default:
                    return;
            }            
        }

        private void btnNuevo_Click(object sender, RoutedEventArgs e)
        {
            ventana_cliente(new ClienteCS(), 0);
        }


    }
}
